﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL
Imports DevComponents.DotNetBar


Public Class ctrlNuevaBusqueda

    Private _llamador As frmMainMetro
    Private _bAlta As Boolean
    Private _oBusqueda As cBusqueda
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnAceptar.Text = _RM.GetString("btnAceptar")
        btnCancelar.Text = _RM.GetString("btnCancelar")

        lblTituloNumero.Text = _RM.GetString("strNumero") + ":"
        lblTituloInicioProg.Text = _RM.GetString("strInicioProg") + ":"
        lblTituloFinProg.Text = _RM.GetString("strFinProg") + ":"
        lblTituloTelPostulaciones.Text = _RM.GetString("strTelParaPostulaciones") + ":"
        lblTituloEMail.Text = _RM.GetString("strEMailParaPostulaciones") + ":"
        lblTituloDep.Text = _RM.GetString("strDepartamentoSolicitante") + ":"
        lblTituloResponsableSoli.Text = _RM.GetString("strResponsableSolicitud") + ":"
        lblTituloResponsableRRHH.Text = _RM.GetString("strResponsableRRHH") + ":"
        lblTituloDetalle.Text = _RM.GetString("strDetalle") + ":"
        lblTituloTituloBusq.Text = _RM.GetString("strTituloDeLaBusqueda") + ":"

        lblTituloForm.Text = _RM.GetString("strNuevaBusqueda")

        SetAyudaContextual()

    End Sub


    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
    End Sub

    Public Sub CargarComboDepartamentos()
        Dim oDepartamento As cDepartamento
        Dim colObjetos As Collection
        Dim cmbItem As ComboBoxItem


        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        cmbDepartamentoSolic.BeginUpdate()

        cmbDepartamentoSolic.Items.Clear()

        cmbItem = New ComboBoxItem

        cmbItem.Tag = ""
        cmbItem.Text = _RM.GetString("strComboSeleccioneItem")

        cmbDepartamentoSolic.Items.Add(cmbItem)

        Try
            colObjetos = GestorDepartamento.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oDepartamento In colObjetos

                    cmbItem = New ComboBoxItem

                    cmbItem.Tag = oDepartamento.Dep_Codigo
                    cmbItem.Text = oDepartamento.Dep_Descrip

                    cmbDepartamentoSolic.Items.Add(cmbItem)
                Next
            End If

            cmbDepartamentoSolic.SelectedIndex = 0

        Catch ex As Excepciones.DepartamentoFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        cmbDepartamentoSolic.EndUpdate()

    End Sub

    Public Sub CargarComboResponsableSolicitud()
        Dim oEmpleado As cEmpleado
        Dim colObjetos As Collection
        Dim cmbItem As ComboBoxItem


        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        cmbResponsableSolic.BeginUpdate()

        cmbResponsableSolic.Items.Clear()

        cmbItem = New ComboBoxItem

        cmbItem.Tag = ""
        cmbItem.Text = _RM.GetString("strComboSeleccioneItem")

        cmbResponsableSolic.Items.Add(cmbItem)

        Try
            colObjetos = GestorEmpleado.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oEmpleado In colObjetos

                    cmbItem = New ComboBoxItem

                    cmbItem.Tag = oEmpleado.Emp_Legajo
                    cmbItem.Text = oEmpleado.Emp_NombreAp

                    cmbResponsableSolic.Items.Add(cmbItem)
                Next
            End If

            cmbResponsableSolic.SelectedIndex = 0

        Catch ex As Excepciones.EmpleadoFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        cmbResponsableSolic.EndUpdate()

    End Sub

    Public Sub CargarComboResponsableRRHH()
        Dim oEmpleado As cEmpleado
        Dim colObjetos As Collection
        Dim cmbItem As ComboBoxItem


        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        cmbResponsableRRHH.BeginUpdate()

        cmbResponsableRRHH.Items.Clear()

        cmbItem = New ComboBoxItem

        cmbItem.Tag = ""
        cmbItem.Text = _RM.GetString("strComboSeleccioneItem")

        cmbResponsableRRHH.Items.Add(cmbItem)

        Try
            colObjetos = GestorEmpleado.Instance.ConsultarRRHH

            If Not colObjetos Is Nothing Then

                For Each oEmpleado In colObjetos

                    cmbItem = New ComboBoxItem

                    cmbItem.Tag = oEmpleado.Emp_Legajo
                    cmbItem.Text = oEmpleado.Emp_NombreAp

                    cmbResponsableRRHH.Items.Add(cmbItem)
                Next
            End If

            cmbResponsableRRHH.SelectedIndex = 0

        Catch ex As Excepciones.EmpleadoFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        cmbResponsableRRHH.EndUpdate()

    End Sub

    Private Function ValidarForm() As Boolean
        Dim bValido As Boolean = True

        If txtTitulo.Text.Trim = "" Then bValido = False
        If txtTelefonoPostulaciones.Text.Trim = "" Then bValido = False
        If txtDetalle.Text.Trim = "" Then bValido = False
        If cmbDepartamentoSolic.SelectedIndex <= 0 Then bValido = False
        If cmbResponsableSolic.SelectedIndex <= 0 Then bValido = False
        If cmbResponsableRRHH.SelectedIndex <= 0 Then bValido = False
        If dateInicioProgramado.Value > dateFinProgramado.Value Then bValido = False

        ValidarForm = bValido

    End Function

    Public Sub MostrarParaAlta()
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strNuevaBusqueda")
        lblMensajes.Text = ""

        _bAlta = True

        _oBusqueda = Nothing

        LlenarForm(Nothing)

        txtTitulo.Focus()

    End Sub

    Public Sub MostrarParaEdicion(oBusqueda As cBusqueda)
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strEditarBusqueda")
        lblMensajes.Text = ""

        _bAlta = False

        _oBusqueda = oBusqueda

        LlenarForm(oBusqueda)

        txtTitulo.Focus()

    End Sub

    Private Sub LlenarForm(oAux As cBusqueda)

        If Not oAux Is Nothing Then
            lblBusqNumero.Text = oAux.Busq_Numero
            txtTitulo.Text = oAux.Busq_Titulo
            dateInicioProgramado.Value = oAux.Busq_FInicioProg
            dateFinProgramado.Value = oAux.Busq_FFinProg
            txtTelefonoPostulaciones.Text = oAux.Busq_TelPostulaciones
            txtEMail.Text = oAux.Busq_MailPostulaciones
            txtDetalle.Text = oAux.Busq_Detalle
            PosicionarCombo(cmbDepartamentoSolic, oAux.oDepartamento.Dep_Codigo)
            PosicionarCombo(cmbResponsableSolic, oAux.oEmpleadoSectorSel.Emp_Legajo)
            PosicionarCombo(cmbResponsableRRHH, oAux.oEmpleadoRRHH.Emp_Legajo)
        Else
            lblBusqNumero.Text = "(...)"
            txtTitulo.Text = ""
            dateInicioProgramado.Value = Date.MinValue
            dateFinProgramado.Value = Date.MinValue
            txtTelefonoPostulaciones.Text = ""
            txtEMail.Text = ""
            txtDetalle.Text = ""
            cmbDepartamentoSolic.SelectedIndex = 0
            cmbResponsableSolic.SelectedIndex = 0
            cmbResponsableRRHH.SelectedIndex = 0
        End If

    End Sub

    Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
        Dim oAux As cBusqueda


        If ValidarForm() Then
            If _bAlta Then
                oAux = New cBusqueda
                oAux.Busq_Numero = 0
                oAux.Busq_Titulo = txtTitulo.Text
                oAux.Busq_FCreacion = Date.MinValue
                oAux.Busq_FInicioProg = dateInicioProgramado.Value
                oAux.Busq_FFinProg = dateFinProgramado.Value
                oAux.Busq_Detalle = txtDetalle.Text
                oAux.Busq_TelPostulaciones = txtTelefonoPostulaciones.Text
                oAux.Busq_MailPostulaciones = txtEMail.Text
                oAux.oDepartamento.Dep_Codigo = Utils.Convert.ToInt16(cmbDepartamentoSolic.SelectedItem.tag)
                oAux.oEmpleadoSectorSel.Emp_Legajo = Utils.Convert.ToInt16(cmbResponsableSolic.SelectedItem.tag)
                oAux.oEmpleadoRRHH.Emp_Legajo = Utils.Convert.ToInt16(cmbResponsableRRHH.SelectedItem.tag)
                oAux.oEstado_Busqueda.EstB_Codigo = 1

                Try
                    GestorBusqueda.Instance.Ingresar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.BusquedaAlta))

                Catch ex As Excepciones.BusquedaFalloAlta
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            Else
                oAux = New cBusqueda
                oAux.Busq_Numero = Utils.Convert.ToInt16(lblBusqNumero.Text)
                oAux.Busq_Titulo = txtTitulo.Text
                oAux.Busq_FCreacion = Date.MinValue
                oAux.Busq_FInicioProg = dateInicioProgramado.Value
                oAux.Busq_FFinProg = dateFinProgramado.Value
                oAux.Busq_Detalle = txtDetalle.Text
                oAux.Busq_TelPostulaciones = txtTelefonoPostulaciones.Text
                oAux.Busq_MailPostulaciones = txtEMail.Text
                oAux.oDepartamento.Dep_Codigo = Utils.Convert.ToInt16(cmbDepartamentoSolic.SelectedItem.tag)
                oAux.oEmpleadoSectorSel.Emp_Legajo = Utils.Convert.ToInt16(cmbResponsableSolic.SelectedItem.tag)
                oAux.oEmpleadoRRHH.Emp_Legajo = Utils.Convert.ToInt16(cmbResponsableRRHH.SelectedItem.tag)
                oAux.oEstado_Busqueda.EstB_Codigo = 1

                Try
                    GestorBusqueda.Instance.Editar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.BusquedaModificacion))

                Catch ex As Excepciones.BusquedaFalloEditar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try

            End If


            _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
            _llamador.RefrescarGrillaFiltroBusquedas()
        Else
            lblMensajes.Text = "Complete todos los datos requeridos..."
        End If
    End Sub

    Private Sub PosicionarCombo(cmbAux As Object, sTag As String)
        Dim cmbItem As DevComponents.DotNetBar.ComboBoxItem

        If cmbAux.Items.Count > 1 Then
            For Each cmbItem In cmbAux.Items
                If cmbItem.Tag = sTag Then
                    cmbAux.SelectedItem = cmbItem
                End If
            Next
        End If

    End Sub

    Public Sub SetAyudaContextual()
        _RM = New ResourceManager("UI.AyudaContextual", System.Reflection.Assembly.GetExecutingAssembly)

        HelpProviderForm.SetHelpString(txtTitulo, _RM.GetString("strHelpBusquedaTitulo"))
        HelpProviderForm.SetHelpString(dateInicioProgramado, _RM.GetString("strHelpBusquedaFInicio"))
        HelpProviderForm.SetHelpString(dateFinProgramado, _RM.GetString("strHelpBusquedaFFin"))
        HelpProviderForm.SetHelpString(txtTelefonoPostulaciones, _RM.GetString("strHelpBusquedaTel"))
        HelpProviderForm.SetHelpString(txtEMail, _RM.GetString("strHelpBusquedaMail"))
        HelpProviderForm.SetHelpString(cmbDepartamentoSolic, _RM.GetString("strHelpBusquedaDepartamento"))
        HelpProviderForm.SetHelpString(cmbResponsableSolic, _RM.GetString("strHelpBusquedaResponsableSol"))
        HelpProviderForm.SetHelpString(cmbResponsableRRHH, _RM.GetString("strHelpBusquedaResponsableRRHH"))
        HelpProviderForm.SetHelpString(txtDetalle, _RM.GetString("strHelpBusquedaDetalle"))

    End Sub

    Public Sub Inicializar()

        SetAyudaContextual()

    End Sub

End Class
